﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Cotizav.CONEXION.DataSet;
using Cotizav.CONEXION;
using Microsoft.Reporting.WinForms;
using Cotizav.CONTROLADOR;

namespace Cotizav.PRESENTACION.Cotizacion.Report
{
    public partial class ReporteCotizacion : Form
    {
        CtrlCotizacion_Detalle ctCotizacionDetalle;
        CtrlCondicionCotizacion ctCondicionCotizacion;
        CtrlContactoCotizacion ctContactoCotizacion;
        CtrlVendedorCotizacion ctVendedorCotizacion;
        string idCotizacion;
        string tipoCotizacion;

        public ReporteCotizacion()
        {
            InitializeComponent();

            ctCotizacionDetalle = new CtrlCotizacion_Detalle();
            ctCondicionCotizacion = new CtrlCondicionCotizacion();
            ctContactoCotizacion = new CtrlContactoCotizacion();
            ctVendedorCotizacion = new CtrlVendedorCotizacion();
        }

        public ReporteCotizacion(string Id,string tipo) : this()
        {
            idCotizacion = Id;
            tipoCotizacion = tipo;
        }

        private void ReporteCotizacion_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(tipoCotizacion))
            {
                switch (tipoCotizacion)
                {
                    case "Alquiler":
                        this.reportViewer1.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepDocumentoCotizacion.rdlc";

                        DataSetCotizav.usp_listarCotizacionDetalleDataTable dtPrueba = this.loadDS_CotizacionDetalle(idCotizacion);
                        DataSetCotizav.usp_listarCondicionCotizacion_AlquilerDataTable dtCondAlquiler = this.loadDS_CondicionCotizacion_Alquiler(idCotizacion);
                        DataSetCotizav.usp_listarCondicionCotizacion_ComercialDataTable dtCondComercial = this.loadDS_CondicionCotizacion_Comercial(idCotizacion);
                        DataSetCotizav.usp_listarCondicionCotizacion_InformacionAdicionalDataTable dtCondInformacionAdicional = this.loadDS_CondicionCotizacion_InformacionAdicional(idCotizacion);
                        DataSetCotizav.usp_listarContactosxCotizacionDataTable dtContactosCotizacion = this.loadDS_ContactosCotizacion(idCotizacion);
                        DataSetCotizav.usp_listarVendedor_CotizacionDataTable dtVendedorCotizacion = this.loadDS_VendedorCotizacion(idCotizacion);

                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CotizacionDetalle", dtPrueba.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CondicionCotizacionAlquiler", dtCondAlquiler.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CondicionCotizacionComercial", dtCondComercial.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CondicionCotizacionInformacionAdicional", dtCondInformacionAdicional.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_ContactosCotizacion", dtContactosCotizacion.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_VendedorCotizacion", dtVendedorCotizacion.ToList()));
                        this.reportViewer1.RefreshReport();

                        break;
                    case "Venta":

                        this.reportViewer1.LocalReport.ReportEmbeddedResource = "Cotizav.REPORTES.RepDocumentoCotizacionVenta.rdlc";

                        DataSetCotizav.usp_listarCotizacionDetalle_VentaDataTable dtPrueba1 = this.loadDS_CotizacionDetallexVenta(idCotizacion);
                        DataSetCotizav.usp_listarCondicionCotizacion_ComercialDataTable dtCondComercial1 = this.loadDS_CondicionCotizacion_Comercial(idCotizacion);
                        DataSetCotizav.usp_listarCondicionCotizacion_InformacionAdicionalDataTable dtCondInformacionAdicional1 = this.loadDS_CondicionCotizacion_InformacionAdicional(idCotizacion);
                        DataSetCotizav.usp_listarContactosxCotizacionDataTable dtContactosCotizacion1 = this.loadDS_ContactosCotizacion(idCotizacion);

                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CotizacionDetalle_Venta", dtPrueba1.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CondicionCotizacionComercial", dtCondComercial1.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_CondicionCotizacionInformacionAdicional", dtCondInformacionAdicional1.ToList()));
                        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ds_ContactoCotizacion", dtContactosCotizacion1.ToList()));
                        this.reportViewer1.RefreshReport();

                        break;
                }
            }
        }

        private DataSetCotizav.usp_listarCotizacionDetalleDataTable loadDS_CotizacionDetalle(string idCotizacion)
        {
            DataSetCotizav.usp_listarCotizacionDetalleDataTable dt = new DataSetCotizav.usp_listarCotizacionDetalleDataTable();

            if (!string.IsNullOrWhiteSpace(idCotizacion))
            {
                DataTable dtResult = ctCotizacionDetalle.getListCotizacionDetallexCotizacion(idCotizacion);

                foreach (DataRow dr in dtResult.Rows)
                {
                    dt.Rows.Add
                        (
                            dr[0].ToString(),
                            dr[1].ToString(),
                            dr[2].ToString(),
                            dr[3].ToString(),
                            dr[4].ToString(),
                            dr[5].ToString(),
                            dr[6].ToString(),
                            dr[7].ToString(),
                            dr[8].ToString(),
                            dr[9].ToString(),
                            dr[10].ToString(),
                            dr[11].ToString(),
                            dr[12].ToString(),
                            dr[13].ToString(),
                            dr[14].ToString(),
                            dr[15].ToString(),
                            dr[16].ToString(),
                            dr[17].ToString(),
                            dr[18].ToString(),
                            dr[19].ToString(),
                            dr[20].ToString(),
                            dr[21].ToString(),
                            dr[22].ToString(),
                            dr[23].ToString(),
                            dr[24].ToString()
                         );
                }
            }

            return dt;
        }

        private DataSetCotizav.usp_listarCotizacionDetalle_VentaDataTable loadDS_CotizacionDetallexVenta(string idCotizacion)
        {
            DataSetCotizav.usp_listarCotizacionDetalle_VentaDataTable dt = new DataSetCotizav.usp_listarCotizacionDetalle_VentaDataTable();

            if (!string.IsNullOrWhiteSpace(idCotizacion))
            {
                DataTable dtResult = ctCotizacionDetalle.getListCotizacionDetallexCotizacionxVenta(idCotizacion);
                
                foreach (DataRow dr in dtResult.Rows)
                {
                    dt.Rows.Add
                        (
                            dr[0].ToString(),
                            dr[1].ToString(),
                            dr[2].ToString(),
                            dr[3].ToString(),
                            dr[4].ToString(),
                            dr[5].ToString(),
                            dr[6].ToString(),
                            dr[7].ToString(),
                            dr[8].ToString(),
                            dr[9].ToString(),
                            dr[10].ToString(),
                            dr[11].ToString(),
                            dr[12].ToString(),
                            dr[13].ToString(),
                            dr[14].ToString(),
                            dr[15].ToString(),
                            dr[16].ToString(),
                            dr[17].ToString(),
                            dr[18].ToString(),
                            dr[19].ToString(),
                            dr[20].ToString()
                         );
                } 
            }

            return dt;
        }

        private DataSetCotizav.usp_listarCondicionCotizacion_AlquilerDataTable loadDS_CondicionCotizacion_Alquiler(string idCotizacion)
        {
            DataTable dtResult = ctCondicionCotizacion.getListCondicionCotizacion_Alquiler(idCotizacion);
            DataSetCotizav.usp_listarCondicionCotizacion_AlquilerDataTable dt = new DataSetCotizav.usp_listarCondicionCotizacion_AlquilerDataTable();

            foreach (DataRow dr in dtResult.Rows)
            {
                dt.Rows.Add(dr[0].ToString(), dr[1].ToString());
            }

            return dt;
        }

        private DataSetCotizav.usp_listarCondicionCotizacion_ComercialDataTable loadDS_CondicionCotizacion_Comercial(string idCotizacion)
        {
            DataTable dtResult = ctCondicionCotizacion.getListCondicionCotizacion_Comercial(idCotizacion);
            DataSetCotizav.usp_listarCondicionCotizacion_ComercialDataTable dt = new DataSetCotizav.usp_listarCondicionCotizacion_ComercialDataTable();

            foreach (DataRow dr in dtResult.Rows)
            {
                dt.Rows.Add(dr[0].ToString(), dr[1].ToString());
            }

            return dt;
        }

        private DataSetCotizav.usp_listarCondicionCotizacion_InformacionAdicionalDataTable loadDS_CondicionCotizacion_InformacionAdicional(string idCotizacion)
        {
            DataTable dtResult = ctCondicionCotizacion.getListCondicionCotizacion_InformacionAdicional(idCotizacion);
            DataSetCotizav.usp_listarCondicionCotizacion_InformacionAdicionalDataTable dt = new DataSetCotizav.usp_listarCondicionCotizacion_InformacionAdicionalDataTable();

            foreach (DataRow dr in dtResult.Rows)
            {
                dt.Rows.Add(dr[0].ToString(), dr[1].ToString());
            }

            return dt;
        }        

        private DataSetCotizav.usp_listarContactosxCotizacionDataTable loadDS_ContactosCotizacion(string idCotizacion)
        {
            DataTable dtResult = ctContactoCotizacion.getListContactoxCotizacion(idCotizacion);
            DataSetCotizav.usp_listarContactosxCotizacionDataTable dt = new DataSetCotizav.usp_listarContactosxCotizacionDataTable();

            foreach (DataRow dr in dtResult.Rows)
            {
                dt.Rows.Add(dr[0].ToString(), dr[1].ToString(), dr[2].ToString());
            }

            return dt;
        }

        private DataSetCotizav.usp_listarVendedor_CotizacionDataTable loadDS_VendedorCotizacion(string idCotizacion)
        {
            DataTable dtResult = ctVendedorCotizacion.getListVendedorxCotizacion(idCotizacion);
            DataSetCotizav.usp_listarVendedor_CotizacionDataTable dt = new DataSetCotizav.usp_listarVendedor_CotizacionDataTable();

            foreach (DataRow dr in dtResult.Rows)
            {
                dt.Rows.Add(dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString());
            }

            return dt;
        }
    }
}
